package com.kfm.base.oop3;

public class ObjectDemo {

    public static void main(String[] args) {
        /*
            java.lang.Object 类是所有类的父类, Object 类中的成员(都是public / protected 修饰)在所有类中都有.


         */
//        Object obj;

        // toString
        Cat cat = new Cat("加菲猫");

        int[] arr = new int[4];

        System.out.println(arr);
        System.out.println(cat);

        // hashCode() / equals()
        Student stu = new Student("张三", 23, '男', "A0001");
        Student stu1 = new Student("张三", 23, '男', "A0001");
        System.out.println(stu);
        System.out.println(stu1);

        /*
          == 判断两个变量值是否相等， 引用数据类型的值是其地址（引用）
          equals 用于判断两个对象是否相等，基于内容(字段)
         */
        System.out.println(stu == stu1);
        System.out.println(stu.equals(stu1));

//        System.out.println(null == null); // true

        // hashCode()  两个对象 equals 为true  hashcode 值一样, hashcode值一样，equals结果不一定为 true
        System.out.println(stu.hashCode());
        System.out.println(stu1.hashCode());

        System.out.println("Aa".hashCode());
        System.out.println("BB".hashCode());

        // getClass 获取对象的 Class 对象
        Class cla = stu.getClass();

        System.out.println(cla);
        // 类的全限定名
        System.out.println(cla.getName());
        // 类名
        System.out.println(cla.getSimpleName());
        // 包名
        System.out.println(cla.getPackageName());
        // 获取父类
        System.out.println(cla.getGenericSuperclass());
    }
}
